package org.hy.persistence.profile;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.hy.domain.profile.PartialProfile;
import org.hy.domain.profile.Profile;
import org.hy.domain.profile.ProfileVersion;

/**
 * 档案映射类
 * @author Tom.Feng
 * @version 1.0
 * @tip 删除时只能单项删除
 */

public interface ProfileMapper {
	
	/**
	 * 获取档案对象
	 * @param id 档案id
	 * @return 档案对象
	 */
	Profile findProfileById(Integer id);
	
	/**
	 * 获取档案对象,不包括课程,教育经历,职业经历等信息
	 * @param uid 用户id
	 * @return 档案对象
	 */
	Profile findProfileByUid(Integer uid);
	
	/**
	 * 获取用户的名片
	 * @param uid 用户id
	 * @return 
	 */
	PartialProfile findPartialProfileByUid(int uid);
	
	/**
	 * 获取详细的档案信息,包括关联的课程,教育经历,职业经历等
	 * @param uid
	 * @return
	 */
	Profile findDetailedProfile(Integer uid);
	
	/**
	 * 添加档案
	 * @param profile 档案对象
	 * @return
	 */
	int insertProfile(Profile profile);
	
	/**
	 * 更新档案
	 * @param profile 档案对象
	 * @return
	 */
	int updateProfile(Profile profile);
	
	/**
	 * 删除整个档案,此方法一般不使用
	 * @param id
	 * @return
	 */
	int deleteProfile(Integer id);

	/**
	 * 备份档案
	 * @param profile 格式化后的档案
	 * @return
	 */
	int backUp(@Param("uid" )int uid,@Param("formattedProfile") String formattedProfile);

	
	/**
	 * 获取用户备份的档案列表
	 * @param uid
	 * @return
	 */
	List<ProfileVersion> findProfileVersionsByUid(int uid);
}
